home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
TPUG - Toronto PET Users Group
/
TPUG Users Group CD
/
TPUG Users Group CD.iso
/
AMIGA
/
(A)P
/
(A)P1.ADF
/
stars
/
stars.c
< prev
Wrap
C/C++ Source or Header
|
1987-05-25
|
3KB
|
141 lines
/* :ts=8
* stars.c: An attmept to fight boredom (yet again).
* by Leo L. Schwab 8606.30
*/
#include <exec/types.h>
#include <intuition/intuition.h>
#define NSTARS 64
extern void *OpenLibrary(), *OpenScreen(), *OpenWindow(), *GetMsg();
extern short rnd();
long *IntuitionBase, *GfxBase;
struct NewScreen scrdef = {
0, 0, 320, 200,
4, /* # planes */
-1, -1,
NULL,
CUSTOMSCREEN,
NULL, NULL, NULL, NULL
};
struct NewWindow windef = {
0, 0, 320, 200,
-1, -1,
CLOSEWINDOW,
WINDOWCLOSE,
NULL, NULL, NULL, NULL, NULL,
0, 0, 0, 0,
CUSTOMSCREEN
};
struct Window *win;
struct Screen *scr;
struct RastPort *rp;
short x[NSTARS], y[NSTARS], z[NSTARS];
short xo[NSTARS], yo[NSTARS];
main (ac, av)
char *av[];
int ac;
{
long xs, ys;
long *msg;
short magic;
register short i, inc;
if (ac > 1)
magic = atoi (av[1]);
else
magic = 256;
if (ac > 2)
inc = atoi (av[2]);
else
inc = 3;
openstuff ();
rnd (-5286);
SetRast (rp, 0L);
for (xs=0; xs<16; xs++)
SetRGB4 (&(scr -> ViewPort), xs, xs, xs, xs);
for (i=0; i<NSTARS; i++)
mkpoint (i);
FOREVER {
for (i=0; i<NSTARS; i++) {
if ((z[i] -= inc) <= 0)
mkpoint (i);
xs = x[i] * magic / z[i] + 160;
ys = y[i] * magic / z[i] + 100;
SetAPen (rp, 0L);
WritePixel (rp, (long) xo[i], (long) yo[i]);
if (xs < 0 || xs > 319 || ys < 0 || ys > 199)
mkpoint (i);
else {
SetAPen (rp, (long) (256-z[i] >> 4));
WritePixel (rp, xs, ys);
xo[i] = xs; yo[i] = ys;
}
}
if (msg = GetMsg (win -> UserPort)) {
ReplyMsg (msg);
break;
}
}
closestuff ();
}
mkpoint (i)
register short i;
{
x[i] = rnd (256) - 128;
y[i] = rnd (150) - 75;
z[i] = 255;
}
openstuff ()
{
if (!(IntuitionBase = OpenLibrary ("intuition.library", 0L))) {
printf ("Intuition open failed.\n");
die ();
}
if (!(GfxBase = OpenLibrary ("graphics.library", 0L))) {
printf ("graphics open failed.\n");
die ();
}
if (!(scr = OpenScreen (&scrdef))) {
printf ("Can't open screen.\n");
die ();
}
windef.Screen = scr;
if (!(win = OpenWindow (&windef))) {
printf ("Window painted shut.\n");
die ();
}
rp = &(scr -> RastPort);
}
closestuff ()
{
if (win) CloseWindow (win);
if (scr) CloseScreen (scr);
if (GfxBase) CloseLibrary (GfxBase);
if (IntuitionBase) CloseLibrary (IntuitionBase);
}
die ()
{
closestuff ();
exit (-1);
}